From bd1f7e057a3618ba71780615fee9a059034cf549 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 7 Dec 2019 12:07:12 -0500 Subject: [PATCH] inspector: Make visual settings respect the inspected display This is not quite complete, GTK and GSK debug flags are not per display, and slowdown and text direction are not either. --- gtk/inspector/visual.c | 92 +++++++++++++++++++++++------------------ gtk/inspector/visual.h | 3 ++ gtk/inspector/window.c | 3 ++ gtk/inspector/window.h | 1 + gtk/inspector/window.ui | 2 +- 5 files changed, 60 insertions(+), 41 deletions(-) diff --git a/gtk/inspector/visual.c b/gtk/inspector/visual.c index d11bb94c8f..183b30cf8c 100644 --- a/gtk/inspector/visual.c +++ b/gtk/inspector/visual.c @@ -91,6 +91,8 @@ struct _GtkInspectorVisualPrivate GtkInspectorOverlay *fps_overlay; GtkInspectorOverlay *updates_overlay; GtkInspectorOverlay *layout_overlay; + + GdkDisplay *display; }; G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorVisual, gtk_inspector_visual, GTK_TYPE_WIDGET) @@ -165,11 +167,11 @@ static double get_font_scale (GtkInspectorVisual *vis) { #ifdef GDK_WINDOWING_X11 - if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + if (GDK_IS_X11_DISPLAY (vis->priv->display)) { int dpi_int; - g_object_get (gtk_settings_get_default (), + g_object_get (gtk_settings_get_for_display (vis->priv->display), "gtk-xft-dpi", &dpi_int, NULL); @@ -177,11 +179,11 @@ get_font_scale (GtkInspectorVisual *vis) } #endif #ifdef GDK_WINDOWING_WAYLAND - if (GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) + if (GDK_IS_WAYLAND_DISPLAY (vis->priv->display)) { int dpi_int; - g_object_get (gtk_settings_get_default (), + g_object_get (gtk_settings_get_for_display (vis->priv->display), "gtk-xft-dpi", &dpi_int, NULL); @@ -198,7 +200,7 @@ update_font_scale (GtkInspectorVisual *vis, gboolean update_adjustment, gboolean update_entry) { - g_object_set (gtk_settings_get_default (), + g_object_set (gtk_settings_get_for_display (vis->priv->display), "gtk-xft-dpi", (gint)(factor * 96 * 1024), NULL); @@ -505,7 +507,8 @@ init_theme (GtkInspectorVisual *vis) g_list_free (list); g_hash_table_destroy (t); - g_object_bind_property (gtk_settings_get_default (), "gtk-theme-name", + g_object_bind_property (gtk_settings_get_for_display (vis->priv->display), + "gtk-theme-name", vis->priv->theme_combo, "active-id", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); @@ -523,7 +526,8 @@ init_theme (GtkInspectorVisual *vis) static void init_dark (GtkInspectorVisual *vis) { - g_object_bind_property (gtk_settings_get_default (), "gtk-application-prefer-dark-theme", + g_object_bind_property (gtk_settings_get_for_display (vis->priv->display), + "gtk-application-prefer-dark-theme", vis->priv->dark_switch, "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); @@ -596,7 +600,8 @@ init_icons (GtkInspectorVisual *vis) g_hash_table_destroy (t); g_list_free (list); - g_object_bind_property (gtk_settings_get_default (), "gtk-icon-theme-name", + g_object_bind_property (gtk_settings_get_for_display (vis->priv->display), + "gtk-icon-theme-name", vis->priv->icon_combo, "active-id", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); } @@ -658,7 +663,8 @@ init_cursors (GtkInspectorVisual *vis) g_hash_table_destroy (t); g_list_free (list); - g_object_bind_property (gtk_settings_get_default (), "gtk-cursor-theme-name", + g_object_bind_property (gtk_settings_get_for_display (vis->priv->display), + "gtk-cursor-theme-name", vis->priv->cursor_combo, "active-id", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); } @@ -669,7 +675,7 @@ cursor_size_changed (GtkAdjustment *adjustment, GtkInspectorVisual *vis) gint size; size = gtk_adjustment_get_value (adjustment); - g_object_set (gtk_settings_get_default (), "gtk-cursor-theme-size", size, NULL); + g_object_set (gtk_settings_get_for_display (vis->priv->display), "gtk-cursor-theme-size", size, NULL); } static void @@ -677,7 +683,7 @@ init_cursor_size (GtkInspectorVisual *vis) { gint size; - g_object_get (gtk_settings_get_default (), "gtk-cursor-theme-size", &size, NULL); + g_object_get (gtk_settings_get_for_display (vis->priv->display), "gtk-cursor-theme-size", &size, NULL); if (size == 0) size = 32; @@ -689,7 +695,8 @@ init_cursor_size (GtkInspectorVisual *vis) static void init_font (GtkInspectorVisual *vis) { - g_object_bind_property (gtk_settings_get_default (), "gtk-font-name", + g_object_bind_property (gtk_settings_get_for_display (vis->priv->display), + "gtk-font-name", vis->priv->font_button, "font", G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE); } @@ -711,12 +718,10 @@ init_font_scale (GtkInspectorVisual *vis) static void scale_changed (GtkAdjustment *adjustment, GtkInspectorVisual *vis) { - GdkDisplay *display; gint scale; scale = gtk_adjustment_get_value (adjustment); - display = gdk_display_get_default (); - gdk_x11_display_set_surface_scale (display, scale); + gdk_x11_display_set_surface_scale (vis->priv->display, scale); } #endif @@ -724,14 +729,11 @@ static void init_scale (GtkInspectorVisual *vis) { #if defined (GDK_WINDOWING_X11) - GdkDisplay *display; - - display = gdk_display_get_default (); - if (GDK_IS_X11_DISPLAY (display)) + if (GDK_IS_X11_DISPLAY (vis->priv->display)) { gdouble scale; - scale = gdk_monitor_get_scale_factor (gdk_display_get_primary_monitor (display)); + scale = gdk_monitor_get_scale_factor (gdk_display_get_primary_monitor (vis->priv->display)); gtk_adjustment_set_value (vis->priv->scale_adjustment, scale); g_signal_connect (vis->priv->scale_adjustment, "value-changed", G_CALLBACK (scale_changed), vis); @@ -751,7 +753,7 @@ init_scale (GtkInspectorVisual *vis) static void init_animation (GtkInspectorVisual *vis) { - g_object_bind_property (gtk_settings_get_default (), "gtk-enable-animations", + g_object_bind_property (gtk_settings_get_for_display (vis->priv->display), "gtk-enable-animations", vis->priv->animation_switch, "active", G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE); } @@ -952,7 +954,7 @@ row_activated (GtkListBox *box, static void init_gl (GtkInspectorVisual *vis) { - GdkDebugFlags flags = gdk_display_get_debug_flags (gdk_display_get_default ()); + GdkDebugFlags flags = gdk_display_get_debug_flags (vis->priv->display); gtk_switch_set_active (GTK_SWITCH (vis->priv->software_gl_switch), flags & GDK_DEBUG_GL_SOFTWARE); @@ -968,22 +970,24 @@ init_gl (GtkInspectorVisual *vis) static void update_gl_flag (GtkSwitch *sw, - GdkDebugFlags flag) + GdkDebugFlags flag, + GtkInspectorVisual *vis) { - GdkDebugFlags flags = gdk_display_get_debug_flags (gdk_display_get_default ()); + GdkDebugFlags flags = gdk_display_get_debug_flags (vis->priv->display); if (gtk_switch_get_active (sw)) flags |= flag; else flags &= ~flag; - gdk_display_set_debug_flags (gdk_display_get_default (), flags); + gdk_display_set_debug_flags (vis->priv->display, flags); } static void -software_gl_activate (GtkSwitch *sw) +software_gl_activate (GtkSwitch *sw, + GtkInspectorVisual *vis) { - update_gl_flag (sw, GDK_DEBUG_GL_SOFTWARE); + update_gl_flag (sw, GDK_DEBUG_GL_SOFTWARE, vis); } static void @@ -991,19 +995,6 @@ gtk_inspector_visual_init (GtkInspectorVisual *vis) { vis->priv = gtk_inspector_visual_get_instance_private (vis); gtk_widget_init_template (GTK_WIDGET (vis)); - init_direction (vis); - init_theme (vis); - init_dark (vis); - init_icons (vis); - init_cursors (vis); - init_cursor_size (vis); - init_font (vis); - init_font_scale (vis); - init_scale (vis); - init_animation (vis); - init_slowdown (vis); - init_touchscreen (vis); - init_gl (vis); } static void @@ -1124,4 +1115,25 @@ gtk_inspector_visual_class_init (GtkInspectorVisualClass *klass) gtk_widget_class_bind_template_callback (widget_class, software_gl_activate); } +void +gtk_inspector_visual_set_display (GtkInspectorVisual *vis, + GdkDisplay *display) +{ + vis->priv->display = display; + + init_direction (vis); + init_theme (vis); + init_dark (vis); + init_icons (vis); + init_cursors (vis); + init_cursor_size (vis); + init_font (vis); + init_font_scale (vis); + init_scale (vis); + init_animation (vis); + init_slowdown (vis); + init_touchscreen (vis); + init_gl (vis); +} + // vim: set et sw=2 ts=2: diff --git a/gtk/inspector/visual.h b/gtk/inspector/visual.h index 709862e170..321ed85e31 100644 --- a/gtk/inspector/visual.h +++ b/gtk/inspector/visual.h @@ -44,6 +44,9 @@ typedef struct _GtkInspectorVisualClass G_BEGIN_DECLS GType gtk_inspector_visual_get_type (void); +void gtk_inspector_visual_set_display (GtkInspectorVisual *vis, + GdkDisplay *display); + G_END_DECLS diff --git a/gtk/inspector/window.c b/gtk/inspector/window.c index b2a8a36e53..7686323aed 100644 --- a/gtk/inspector/window.c +++ b/gtk/inspector/window.c @@ -41,6 +41,7 @@ #include "misc-info.h" #include "magnifier.h" #include "recorder.h" +#include "visual.h" #include "gdk-private.h" #include "gskrendererprivate.h" @@ -268,6 +269,7 @@ gtk_inspector_window_constructed (GObject *object) gtk_inspector_object_tree_set_display (GTK_INSPECTOR_OBJECT_TREE (iw->object_tree), iw->inspected_display); gtk_inspector_css_editor_set_display (GTK_INSPECTOR_CSS_EDITOR (iw->css_editor), iw->inspected_display); + gtk_inspector_visual_set_display (GTK_INSPECTOR_VISUAL (iw->visual), iw->inspected_display); } static void @@ -418,6 +420,7 @@ gtk_inspector_window_class_init (GtkInspectorWindowClass *klass) gtk_widget_class_bind_template_child (widget_class, GtkInspectorWindow, magnifier); gtk_widget_class_bind_template_child (widget_class, GtkInspectorWindow, sidebar_revealer); gtk_widget_class_bind_template_child (widget_class, GtkInspectorWindow, css_editor); + gtk_widget_class_bind_template_child (widget_class, GtkInspectorWindow, visual); gtk_widget_class_bind_template_callback (widget_class, gtk_inspector_on_inspect); gtk_widget_class_bind_template_callback (widget_class, on_object_activated); diff --git a/gtk/inspector/window.h b/gtk/inspector/window.h index 5616183c0b..d5f611582c 100644 --- a/gtk/inspector/window.h +++ b/gtk/inspector/window.h @@ -72,6 +72,7 @@ typedef struct GtkWidget *magnifier; GtkWidget *sidebar_revealer; GtkWidget *css_editor; + GtkWidget *visual; GtkWidget *selected_widget; diff --git a/gtk/inspector/window.ui b/gtk/inspector/window.ui index 265685e987..1b689371b1 100644 --- a/gtk/inspector/window.ui +++ b/gtk/inspector/window.ui @@ -473,7 +473,7 @@ visual Settings - + -- 2.30.2